package com.ch.ms.server.base;

import com.ch.ms.server.packet.MaplePacket;
import com.ch.ms.server.packet.MaplePacketHeader;
import io.netty.channel.ChannelHandler;

import java.util.List;
import java.util.Map;

public interface MapleServer {

    String getId();

    /**
     * 绑定到主机上的指定端口
     *
     * @param host 主机地址
     * @param port 端口
     * @return 绑定是否成功
     */
    boolean bind(String host, int port);


    boolean shutdown();


    List<ChannelHandler> getChannelHandlers();


    /**
     * 获取服务端支持的消息类型
     *
     * @return
     */
    Map<MaplePacketHeader, Class<? extends MaplePacket>> getSupportedPackets();

    Map<MaplePacketHeader, MaplePacketHandler> getPacketHandlers();

    String getName();

}
